def find_anagrams(s, p):
    """
    问题：在s中找到所有p的字母异位词（字母相同但顺序不同）的起始索引
    思路：滑动窗口+哈希表，比较窗口与p的字符计数
    """
    from collections import defaultdict
    res = []
    len_s, len_p = len(s), len(p)
    if len_s < len_p:
        return res

    # 初始化p和s第一个窗口的字符计数
    p_count = defaultdict(int)
    window_count = defaultdict(int)
    for i in range(len_p):
        p_count[p[i]] += 1
        window_count[s[i]] += 1

    # 第一个窗口匹配则加入结果
    if p_count == window_count:
        res.append(0)

    # 滑动窗口遍历剩余部分
    for i in range(len_p, len_s):
        # 移除窗口左侧字符
        left_char = s[i - len_p]
        window_count[left_char] -= 1
        if window_count[left_char] == 0:
            del window_count[left_char]
        # 加入窗口右侧新字符
        right_char = s[i]
        window_count[right_char] += 1

        # 比较计数是否匹配
        if window_count == p_count:
            res.append(i - len_p + 1)

    return res


# 测试
print(find_anagrams("cbaebabacd", "abc"))  # 输出：[0,6]